大家好!今天我們要來聊聊一個基本概念,叫做 function。
並說明如何在 Google Apps Script 使用它。
只要對 function 稍微有個概念,你就能有效管理你 Google Apps Script 裡眾多的自動化任務。
或許你會覺得這個詞有點陌生,
沒關係,我們從頭開始,保證你看完就能輕鬆搞懂它是怎麼一回事!
在 Google Apps Script 裡面,
function 非常好辨認,因為他會直接寫出"function"這個字眼😆
function 的格式長這樣:
function functionName() {
// 執行的程式碼
}
開頭的 function,是一個固定的保留字,來告訴 Google Apps Script 這是一個 function。
functionName: 是 function 的名稱,可以自己隨便取喜歡的名字。不過只能使用字母、數字或底線,而且不能以數字開頭。
(): 小括號內可以放參數,也可以不放。但括號本身不能省略。關於放參數,我們後面會再詳細介紹。
{}: 大括號內就用來寫需要執行的程式碼。
以我們前面單元練習過的這個自動在儲存格填值的功能為例,
他有 function 關鍵字,
有 function name: fillCell
有小括號、有大括號,也有主體程式碼。
所以他雖然簡短,但仍然是一個獨立完整的 function。
function fillCell() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange("A1").setValue("亨利羊聊工作效率");
sheet.getRange("A2").setValue("https://henryyang.tw/category/%e5%b7%a5%e4%bd%9c%e6%95%88%e7%8e%87/");
}
在教 function 的時候,我通常會講兩個比喻:
1. function 就像一套劇本。你下口令,他做動作。
2. function 就像一台製造機。你投入原料,他做出產品。
我們家有個五歲兒,
每天早上出門上學前,
總是需要爸媽一直提醒做各種早上該做的事。
例如起床、上廁所、刷牙、整理書包、穿襪子。
一項接一項,日復一日。
每天都要一直重複提醒這麼多事項,其實很煩。
那可以怎麼改進呢?
我們可以跟孩子一起坐下來,
拿張紙,在標題寫下「起床任務」,
然後把每一個單項任務都依序列進去。
然後跟孩子約定好:
以後我只要說「請執行起床任務」,
你就要開始動作,
把起床任務清單上的每一項任務依序做完。
概念上來說,
這就是一個名為「起床任務」的 function 。
它就像是一套劇本,
當導演喊「開麥拉!」,
演員就會開始照著設定好的劇本演出來。
在 Google Apps Script 裡,
我們也可能會有很多單項的小任務。
如果有某種任務組合是經常被使用到的,
那我們就可以在 Google Apps Script 裡把這些小任務湊起來,
放在同一個 function 裡,並且給他一個名字。
就像我們把每天早上要做的任務寫成一個清單,
並且幫這個任務清單取一個名字叫做「起床任務」。
打包在一起之後,從此不需要一一個別執行單項任務,
只要說一聲「請執行某某 function」即可。
想像一下一種自動化的極致:
你把一整頭豬丟進一台大機器裡,
這台機器轟隆轟隆地運轉了一下子,
一包包完美包裝好的香腸就從機器另一端的出口掉出來。
哇塞,太自動了吧!
以前你可能要手動一個步驟一個步驟地製作香腸,
但一旦你打造出這台香腸製造機,
就能實現香腸自動化。
而打造 function,就像是在打造這樣一台自動製造機。
因為做報表的工作,
其實也像是一種加工製造。
我們把蒐集來的原始資料,經過排列、整理、計算,
最後做出我們想要的最終成品。
所以我們可以為各種不同的報表需求,
打造不同的對應 function。
當我們需要製作業績報表,
就把所有業績報表需要的原料餵進專門製作業績報表的 function。
當我們需要製作財務報表,
就把所有財務報表需要的原料餵進專門製作財務報表的 function。
簡單的自動化其實可以一個 function 就搞定,
但如果牽步到多個複雜步驟的自動化,
如何把拆解/結合一個個 function 就是一門藝術了。
當你學會如何打造 function,
就像擁有了各種劇本和製造機,
不用再重複做那些繁瑣的步驟,
只要呼叫 function,一切都能自動進行。
我們在後面談延伸技巧的章節,
會再分享一些 function 的活用技巧與常見誤區。
現在讓我們先趕快來看一個真實案例的自動化,
並且一起動手做做看吧!